﻿using BCCommon;
using BCDto.MakeStaticPagingComponent.WebsiteTemplate;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.MakeStaticPagingComponent.WebsiteTemplateService
{
    /// <summary>
    /// 网站模板信息服务接口
    /// </summary>
    public interface IWebsiteTemplateService
    {
        /// <summary>
        /// 添加网站模板信息
        /// </summary>
        /// <param name="websiteTemplateRequestDto">网站模板信息</param>
        /// <returns></returns>
        WebsiteTemplateDto Add(WebsiteTemplateRequestDto websiteTemplateRequestDto);

        /// <summary>
        /// 更新网站模板信息
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <param name="websiteTemplateRequestDto">网站模板信息</param>
        /// <returns></returns>
        WebsiteTemplateDto Update(int websiteTemplateId, WebsiteTemplateRequestDto websiteTemplateRequestDto);
        /// <summary>
        /// 获取当前已使用的网站模板
        /// </summary>
        /// <returns></returns>
        WebsiteTemplateDto GetUsed();
        /// <summary>
        /// 获取网站模板信息
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <returns></returns>
        WebsiteTemplateDto Get(int websiteTemplateId);
        /// <summary>
        /// 获取网站模板信息
        /// </summary>
        /// <param name="templateName">标签名称</param>
        /// <returns></returns>
        WebsiteTemplateDto Get(string templateName);
        /// <summary>
        /// 获取网站模板信息列表
        /// </summary>
        /// <returns></returns>
        IEnumerable<WebsiteTemplateDto> Get();
        /// <summary>
        /// 获取网站模板信息列表
        /// </summary>      
        /// <param name="templateName">模板名称</param>
        /// <param name="start">开始时间</param>
        /// <param name="end">结束时间</param>
        /// <param name="minPrice">最低价格</param>
        /// <param name="maxPrice">最高价格</param>
        /// <param name="sortField">排序字段</param>
        /// <param name="ascending">升序</param>
        /// <param name="index">当前页码</param>
        /// <param name="size">每页数据条数</param>
        /// <returns></returns>
        PageableList<WebsiteTemplateDto> Get(string templateName, decimal? minPrice, decimal? maxPrice, DateTime? start, DateTime? end, string sortField, bool? ascending, int index, int size);

        /// <summary>
        /// 设置网站模板为已使用
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <returns></returns>
        void UpdateWebsiteTemplateIsUsed(int websiteTemplateId);

        /// <summary>
        /// 删除网站模板
        /// </summary>
        /// <param name="websiteTemplateId">网站模板Id</param>
        /// <returns></returns>
        void Delete(int websiteTemplateId);
    }
}
